package cn.i7baozh.boot.learn.runner;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * 如果在启动参数上增加如下：
 * --name=zbq test --abc=bcd
 * 那么args.getNonOptionArgs() 获取的是只有key 没有value的这种键值对， 打印的只有 [test]
 * args.getOptionNames和args.getOptionValues() 获取的是所有kv键值对的数据，通过循环分别能打印出来
 * abc -> [bcd]
 * name -> [zbq]
 * 但是不会打印test，因为test这个配置项只有key，没有value的值，只能通过getNonOptionArgs的方式获取
 *
 * @author zhangbaoqi532
 * @date 2025/1/8
 */
@Slf4j
@Component
@Order(1)
public class MyApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("MyApplicationRunner 开始加载了，getNonOptionArgs参数为 {}", args.getNonOptionArgs());
        for (String optionName : args.getOptionNames()) {
            log.info("MyApplicationRunner 开始加载了，{} -> {}", optionName, args.getOptionValues(optionName));
        }
    }
}
